package com.fengmi.entity;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

@Data
@Document(indexName = "es_user_4",shards = 2,replicas = 1)
public class ESUser {    //=>一个entity对应一个索引库

    @Id
    private String id;

    /**
     * type:指定域的类型
     * Integer（java）=> FieldType.Integer(es)
     * Double(java)=>FieldType.Double(es)
     * String(java)=>  FieldType.Text   or   FieldType.Keyword
     * 如果这个域需要分词那么指定为 FieldType.Text
     * 如果这个域不需要分词那么指定为FieldType.Keyword
     *
     * 数字类型不能分词
     *
     *
     * store：表示域要不要存储
     * eg：商品描述 ，可以建立倒排索引，但是可以不用存储
     *
     *
     * index：表示这个域要不要建立倒排索引，如果指定为false表示不用建立倒排索引，否则就是建立倒排索引，默认值为true
     * eg：图片的url就没必要建立倒排索引
     * 建立倒排索引的原则是，如果需要根据域查询商品，那么必须建立倒排索引
     *
     * analyzer：指定分词效果的，默认使用的standard
     * 如果域的类型是FieldType.Text，那么必须指定中文分词效果（ik_smart,ik_max_word）
     *
     */
    @Field(store = true,type = FieldType.Integer,index = true)
    private Integer account_number;
    @Field(store = true,type = FieldType.Double)
    private Double balance;
    @Field(store = true,type = FieldType.Keyword)
    private String firstname;
    @Field(store = true,type = FieldType.Keyword)
    private String lastname;
    @Field(store = true,type = FieldType.Integer)
    private Integer age;
    @Field(store = true,type = FieldType.Integer)
    private Integer gender;
    @Field(store = true,type = FieldType.Text,analyzer = "ik_max_word")
    private String address;
    @Field(store = true,type = FieldType.Keyword)
    private String job;
    @Field(store = true,type = FieldType.Keyword)
    private String email;
    @Field(store = true,type = FieldType.Keyword)
    private String city;
    @Field(store = true,type = FieldType.Keyword)
    private String state;

}